
package dtdrelacional;

import java.util.*;

public class RelacionER {

    private String nombreRelacion;
    private HashMap<String, Short> entidades;
    private HashMap<String, Boolean> atributos;
    private String absorbida;
    
    static final short MINMAX_01 = 0;
    static final short MINMAX_11 = 1;
    static final short MINMAX_0N = 2;
    static final short MINMAX_1N = 3;
    
    public RelacionER(String nombreRelacion) {
        this.nombreRelacion = nombreRelacion;
        this.entidades = new HashMap<String, Short>();
        this.atributos = new HashMap<String, Boolean>();
    }

    /**
     * @return the nombreRelacion
     */
    public String getNombreRelacion() {
        return nombreRelacion;
    }

    /**
     * @param nombreRelacion the nombreRelacion to set
     */
    public void setNombreRelacion(String nombreRelacion) {
        this.nombreRelacion = nombreRelacion;
    }
    
    public boolean hasEntidad(String nombreEntidad) {
      return entidades.containsKey(nombreEntidad);
    }
    
    public void addEntidad(String nombreEntidad, Short minMax) {
      entidades.put(nombreEntidad, minMax);
    }
    
    public Collection<String> getEntidades() {
      return entidades.keySet();
    }
    
    public short getMinMaxEntidad(String nombreEntidad) {
      return entidades.get(nombreEntidad);
    }
    
    public void addAtributo(String nombreAtributo, boolean requerido) {
      atributos.put(nombreAtributo, requerido);
    }
    public boolean isAtributoRequerido(String nombreAtributo) {
      return atributos.get(nombreAtributo);
    }
    public boolean hasAtributo(String nombreAtributo) {
      return atributos.containsKey(nombreAtributo);
    }
    public Collection<String> getAtributos() {
      return atributos.keySet();
    }

    /**
     * @return the absorbida
     */
    public String getAbsorbida() {
        return absorbida;
    }

    /**
     * @param absorbida the absorbida to set
     */
    public void setAbsorbida(String absorbida) {
        this.absorbida = absorbida;
    }
}
